Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | /**
* Get User By ID Query Handler
* Handles retrieval of a specific user by ID
*/
class GetUserByIdQueryHandler {
constructor(prisma) {
this.prisma = prisma;
}
/**
* Execute get user by ID query
* @param {GetUserByIdQuery} query
* @returns {Promise<Object>} User data without password
*/
async handle(query) {
const { userId } = query;
if (!userId || isNaN(userId)) {
throw new Error('Valid user ID is required');
}
const user = await this.prisma.user.findUnique({
where: { id: parseInt(userId) }
});
if (!user) {
throw new Error('User not found');
}
const { password, ...userWithoutPassword } = user;
return userWithoutPassword;
}
}
module.exports = GetUserByIdQueryHandler;
|